package com.terry.sp.configurer;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
import org.springframework.web.socket.server.standard.ServerEndpointExporter;

import javax.websocket.server.ServerEndpointConfig;

@Configuration
public class WebsocketConfig extends ServerEndpointConfig.Configurator {

    /**
     * 使用@ServerEndpoint创立websocket endpoint
     * <p>
     * 首先要注入ServerEndpointExporter，这个bean会自动注册使用了@ServerEndpoint注解
     * 声明的Websocket endpoint。要注意，如果使用独立的servlet容器，而不是直接使用springboot的
     * 内置容器，就不要注入ServerEndpointExporter，因为它将由容器自己提供和管理。
     * <p>
     * <p>
     * 运行时启用，package时注释
     */

    @Bean
    @Profile("dev")
    public ServerEndpointExporter serverEndPointExporter() {
        return new ServerEndpointExporter();
    }

//    @Override
//    public void modifyHandshake(ServerEndpointConfig sec, HandshakeRequest request, HandshakeResponse response) {
//        // 如果没有监听器，那么这里获取到的HttpSession是null
//        StandardSessionFacade ssf = (StandardSessionFacade) request.getHttpSession();
//
//        if (ssf != null) {
//            HttpSession httpSession = (HttpSession) request.getHttpSession();
//
//            // 关键操作
//            sec.getUserProperties().put("sessionId", httpSession.getId());
//            log.info("获取到的SessionId:" + httpSession.getId());
//        }
//    }


}
